#!/bin/bash

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# 
# ZooKeeper
# 
# chkconfig: 2345 89 9 
# description: zookeeper

# Source function library.
if [ -f /etc/init.d/functions ]; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi

export LOG_DIR="{{ kafka_log_path }}/zookeeper"
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:{{ kafka_home }}/config/log4j.properties"
export KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"

RETVAL=0
USER="{{ kafka_user }}"
CONF="{{ kafka_home }}/config/zookeeper.properties"
KAFKA_BASEDIR="{{ kafka_home }}"
PIDFILE="/var/run/{{ kafka_service_name }}_zookeeper.pid"
LOCKFILE="/var/lock/subsys/{{ kafka_service_name }}-zookeeper"
CONSOLE_OUTPUT_FILE="{{ kafka_log_path }}/zookeeper/zookeeper.out"

CMD="$KAFKA_BASEDIR/bin/kafka-run-class.sh -name zookeeper -loggc org.apache.zookeeper.server.quorum.QuorumPeerMain $CONF > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null & echo \$! > $PIDFILE"

if [ ! -d "$LOG_DIR" ]; then
  mkdir -p "$LOG_DIR"
  chown $USER $LOG_DIR
fi

start() {
  echo -n $"Starting kafka zookeeper: "
  touch $PIDFILE && chown $USER $PIDFILE
  daemon --user $USER "$CMD"
  RETVAL=$?
  [ $RETVAL -eq 0 ] && touch $LOCKFILE
  return $RETVAL
}

stop() {
  echo -n $"Stopping kafka zookeeper: "
  killproc -p $PIDFILE $USER
  RETVAL=$?
  sleep 5
  echo
  [ $RETVAL -eq 0 ] && rm -f $LOCKFILE $PIDFILE
}

restart() {
  stop
  start
}

checkstatus(){
  status -p $PIDFILE "kafka-zookeeper"
  RETVAL=$?
}

condrestart(){
  [ -e "$LOCKFILE" ] && restart || :
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    checkstatus
    ;;
  restart|reload|force-reload)
    restart
    ;;
  condrestart)
    condrestart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    exit 1
esac

exit $RETVAL
